package com.cougil.uoc.seghismed.webservice.impl;

import javax.jws.WebService;

import com.cougil.uoc.seghismed.business.GestorService;
import com.cougil.uoc.seghismed.business.PacientService;
import com.cougil.uoc.seghismed.model.ciphed.HistorialCiphed;
import com.cougil.uoc.seghismed.model.ciphed.PacientCiphed;
import com.cougil.uoc.seghismed.model.ciphed.VisitaCiphed;
import com.cougil.uoc.seghismed.utils.SeghismedException;
import com.cougil.uoc.seghismed.webservice.PacientWebService;

/**
 * Classe que implementa el servei web ofert/consumit per l'aplicatiu Pacient
 * 
 * @author Ignacio Cougil Jares
 * 
 */
@WebService(
		endpointInterface = "com.cougil.uoc.seghismed.webservice.PacientWebService",
		serviceName = "PacientWebService"
)
public class PacientWebServiceImpl extends CoreWebServiceImpl implements
PacientWebService {

	private GestorService gestorService;
	private PacientService pacientService;

	/*
	 * (non-Javadoc)
	 *
	 * @see
	 * com.cougil.uoc.seghismed.webservice.PacientWebService#consultarHistorial(com.cougil.uoc.seghismed
	 * .model.ciphed.PacientCiphed)
	 */
	@Override
	public HistorialCiphed consultarHistorial(PacientCiphed pacient) {
		HistorialCiphed hCiphed = null;
		if (this.isAutenticat(pacient)) {
			// consultem l'historial a través del servei del gestor, per tal de carregar totes les
			// seves dades
			hCiphed = this.gestorService.consultarHistorial(pacient, pacient);
			// Així només obtenim l'historial xifrat, amb els seus IDs associats, però sense cap
			// dada ni de les visites associades ni dels metges, etc. Cal fer-ho a través del servei
			// del gestor
			// hCiphed = this.pacientService.consultarHistorial(pacient);
		} else {
			throw new SeghismedException("Pacient ["+pacient+"] no autenticat!!!!");
		}
		return hCiphed;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see
	 * com.cougil.uoc.seghismed.webservice.PacientWebService#consultarPacient(com.cougil.uoc.seghismed
	 * .model.ciphed.PacientCiphed)
	 */
	@Override
	public PacientCiphed consultarPacient(PacientCiphed pacient) {
		PacientCiphed pTrobat = null;
		if (this.isAutenticat(pacient)) {
			pTrobat = this.pacientService.consultarPacient(pacient);
		} else {
			throw new SeghismedException("Pacient ["+pacient+"] no autenticat!!!!");
		}
		return pTrobat;
	}

	/*
	 * (non-Javadoc)
	 *
	 * @see
	 * com.cougil.uoc.seghismed.webservice.PacientWebService#consultarVisita(com.cougil.uoc.seghismed
	 * .model.ciphed.PacientCiphed, com.cougil.uoc.seghismed.model.ciphed.VisitaCiphed)
	 */
	@Override
	public VisitaCiphed consultarVisita(PacientCiphed pacient, VisitaCiphed visita) {
		VisitaCiphed vTrobada = null;
		if (this.isAutenticat(pacient)) {
			vTrobada = this.gestorService.consultarVisita(pacient, pacient, visita);
		} else {
			throw new SeghismedException("Pacient ["+pacient+"] no autenticat!!!!");
		}
		return vTrobada;
	}

	/**
	 * @param Estableix gestorService com a valor de la propietat gestorService
	 */
	public void setGestorService(GestorService gestorService) {
		this.gestorService = gestorService;
	}

	/**
	 * @param pacientService
	 *            Estableix el valor de la propietat pacientService
	 */
	public void setPacientService(PacientService pacientService) {
		this.pacientService = pacientService;
	}

}
